package com.wash.shoes.domain.dy.model;

import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * @author lijianguo
 * @Date 17/03/2025 17:49
 * 保存
 * https://open.douyin.com/goodlife/v1/goods/product/save/
 * desc: https://bytedance.larkoffice.com/docx/doxcnnyH289B98IgcPiLWxpSChc
 **/
@Data
public class SaveProductModel {
    // TRUE	商品Id，创建时不必填写，更新时如有out_id可不填写
    String product_id;
    // TRUE	外部商品id
    String out_id;
    // TRUE	商品名
    String product_name;
    // TRUE	品类全名，保存时不必填写
    String category_full_name;
    // TRUE	品类id，使用三级类目
    Integer category_id;
    // TRUE 商品类型：1 : 团购套餐 3 : 预售券 4 : 日历房 5 : 门票 7 : 旅行跟拍 8 : 一日游 11 : 代金券 12:酒旅新预售 15：次卡 22：预约 (更新时不可修改，预约需要加白)
    Integer product_type;
    // FALSE "商品二级类型(仅小程序酒旅填写)：1201（旅行社预售）(ps：需product_type=12) (更新时不可修改)"
    Integer product_sub_type;
    // TRUE	业务线 1-闭环自研开发者 5-小程序 (更新时不可修改)
    Integer biz_line;
    // TRUE	商家名(暂时无用)
    String account_name;
    // FALSE 联系电话
    List<String> telephone;
    // FALSE 售卖开始时间(团购商品必填）单位s
    Long sold_start_time;
    // FALSE 售卖结束时间(团购商品必填）(到期自动下架) 单位s
    Long sold_end_time;
    // FALSE 第三方跳转链接，小程序商品必填
    String out_url;
    // TRUE	店铺列表
    List<Poi> pois;
    // TRUE 商品属性KV，填写时查询“查询商品模板”接口，map的value中数据最后要转成String！
    Map<String, String> attr_key_value_map;
    // FALSE 商品额外信息
    ProductExt product_ext;

    // 店铺列表
    @Data
    public static class Poi {
        // FALSE poiID，技术服务商保存商品填写该字段(在来客的门店管理列表中)
        String poi_id;
        // FALSE 接入方店铺id,代运营服务商保存商品选择poi_id或者supplier_ext_id其中一个字段填写
        String supplier_ext_id;
    }

    // FALSE 商品额外信息
    @Data
    public static class ProductExt {

        // 商家佣金率
        Integer agency_rate;

        // 价格 low_price high_price
        Map<String, Integer> display_price;

        // 类目id
        String category_out_id;

        // 是否全部sku售罄
        Boolean all_sku_sell_out;

        // 外卖业务code
        String eleme_biz_code;

        // 外卖业务extra_info
        String eleme_extra_info;

        // 是否绑定线索元素
        String is_bind_clue_element;

        // FALSE "true / null - 审核通过自动上架  false - 审核通过不自动上架"
        Boolean auto_online;
        // FALSE 测试商品信息
        TestExtra test_extra;
    }

    // 测试商品信息
    @Data
    public static class TestExtra {
        // FALSE 商品可见的用户UID列表，["123456"]，最多10个
        List<String> uids;
        // FALSE
        Boolean test_flag;
    }

    // sku数据
    @Data
    public static class Sku {
        // TRUE	sku名(限制128个字符)
        String sku_name;
        // TRUE	sku名(限制128个字符)
        String sku_id;
        // TRUE	原价，团购创建时如有commodity属性可不填，会根据菜品搭配计算原价，单位分，计算方式： 菜品搭配x选n，菜品组价格从大到小排序，累加n个菜品组价格得出原价
        int origin_amount;
        // TRUE	实际支付价格，单位分
        int actual_amount;
        // TRUE	库存信息
        StockStruct stock;
        // FALSE 第三方id
        String out_sku_id;
        // TRUE 状态 1-在线 ；默认传1，只能传1
        int status;
        // TRUE sku属性KV，填写时参考下文「attr_key_value_map的格式」
        Map<String, String> attr_key_value_map;
    }

    // 库存信息
    @Data
    public static class StockStruct {
        // TRUE	库存上限类型，为2时stock_qty和avail_qty字段无意义 1-有限库存 2-无限库存
        int limit_type;
        // TRUE 总库存，limit_type=2时无意义
        int stock_qty;
    }

}
